package thread;
/**在静态方法上使用synchronized，那该方法具有同步效果*/
public class SyncDemo3 {
    public static void main(String[] args) {
        /*
        Thread t1=new Thread("小雨"){
            public void run(){
                Boo.doSome();//调用静态方法直接类名.方法
            }
        };
        Thread t2=new Thread("小雪"){
            public void run(){
                Boo.doSome();//焦勇静态方法直接类名.方法
            }
        };
         */
        Boo b1=new Boo();
        Boo b2=new Boo();
        Thread t1=new Thread("小雨"){
            public void run(){
                b1.doSome();
            }
        };
        Thread t2=new Thread("小雪"){
            public void run(){
                b2.doSome();
            }
        };
        t1.start();
        t2.start();
    }
}
/*
        静态方法上使用synchronized同步监视器对象为当前类的类对象Class实例
        Class类对象后面我们反射知识点介绍
*/
class Boo{
    //public synchronized static void doSome(){
    public  static void doSome(){
        //静态方法使用同步块，对象是  类名.class
        synchronized (Boo.class) {
            Thread t = Thread.currentThread();
            System.out.println(t.getName() + "正在执行doSome方法");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(t + "执行doSome方法完毕！");
        }
    }
}
